package com.sheng.leetcode.year2022.month04.day28;

import org.junit.Test;

/**
 * @author liusheng
 * @date 2022/04/28
 *
 * 905. 按奇偶排序数组
 *
 * 给你一个整数数组 nums，将 nums 中的的所有偶数元素移动到数组的前面，
 * 后跟所有奇数元素。
 * 返回满足此条件的 任一数组 作为答案。
 *
 * 示例 1：
 *
 * 输入：nums = [3,1,2,4]
 * 输出：[2,4,3,1]
 * 解释：[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。
 * 示例 2：
 *
 * 输入：nums = [0]
 * 输出：[0]
 *
 * 提示：
 *
 * 1 <= nums.length <= 5000
 * 0 <= nums[i] <= 5000
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/sort-array-by-parity
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class LeetCode0905 {

    @Test
    public void test01(){
        int[] nums = new int[] {3,1,2,4};
        int[] ints = new Solution().sortArrayByParity(nums);
        for (int i = 0; i < ints.length; i++) {
            System.out.println(ints[i]);
        }
    }

}
//class Solution {
//    public int[] sortArrayByParity(int[] nums) {
//        int length = nums.length;
//        for (int i = 0; i < length; i++) {
//            //偶数
//            if ((nums[i] & 1) == 0) {
//                for (int j = 0; j < length; j++) {
//                    //奇数
//                    if ((nums[j] & 1) == 1) {
//                        int temp = nums[i];
//                        nums[i] = nums[j];
//                        nums[j] = temp;
//                        break;
//                    }
//                }
//            }
//        }
//        return nums;
//    }
//}

//根据题意进行模拟即可：
//使用指针 i 和 j 分别代表未处理区间的左右端点，
//当 nums[i] 不为偶数时，将 i 和 j 两个位置互换，
//原有位置 j 必然是奇数（已处理好），让 j 自减左移，
//但原有位置 i 交换后不确保是偶数，需要再次检查。
class Solution {
    public int[] sortArrayByParity(int[] nums) {
        int n = nums.length;
        for (int i = 0, j = n - 1; i < j; i++) {
            if (nums[i] % 2 == 1) {
                int c = nums[j];
                nums[j--] = nums[i];
                nums[i--] = c;
            }
        }
        return nums;
    }
}
//
//作者：AC_OIer
//链接：https://leetcode-cn.com/problems/sort-array-by-parity/solution/by-ac_oier-nuz7/
//来源：力扣（LeetCode）
//著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
